package com.wsg.dep.queue;

/**
 * 接待员：负责接待生产者和消费者
 */
public interface Reception {

    /**
     * 申请号码
     * 叫下一个号
     * @return 下一个号
     */
    long acquireNext();

    /**
     * 申请号码
     * 叫下一个范围的号
     * @param next 下一个号码
     * @return 结束的号，由[current,return]组成一个号的范围
     */
    long acquireNext(long next);

    /**
     * 取号
     * 用餐（消费或生产）结束后将号码归还
     * 当前默认归还下一个
     */
    void release();

    /**
     * 取号
     * 用餐（消费或生产）结束后将号码归还
     * 当前归还一段号码
     */
    void release(long range);
}
